home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / MPW Interfaces & Libraries / CIncludes / PPCToolBox.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-29  |  12.6 KB  |  387 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Thursday, September 5, 1991 at 5:45 PM
  5.  PPCToolBox.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1989-1991
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef __PPCTOOLBOX__
  16. #define __PPCTOOLBOX__
  17.  
  18. #ifndef __APPLETALK__
  19. #include <AppleTalk.h>
  20. #endif
  21.  
  22. #ifndef __MEMORY__
  23. #include <Memory.h>
  24. #endif
  25.  
  26. #ifndef __TYPES__
  27. #include <Types.h>
  28. #endif
  29.  
  30.  
  31. enum {
  32.  
  33.  
  34. /*The following is temporarily placed here, later it will be moved to GestaltEqu*/
  35.  gestaltPPCSupportsStoreAndForward = 0x2000
  36.  
  37. #define gestaltPPCVersionAttr 'ppcv'
  38. };
  39.  
  40. typedef unsigned char PPCServiceType;
  41.  
  42. enum {
  43.  
  44.  ppcServiceRealTime = 1,
  45.  ppcServiceStoreAndForward = 2
  46. };
  47.  
  48. typedef short PPCLocationKind;
  49.  
  50. enum {
  51.  
  52.  ppcNoLocation = 0,                            /* There is no PPCLocName */
  53.  ppcNBPLocation = 1,                        /* Use AppleTalk NBP      */
  54.  ppcNBPTypeLocation = 2                        /* Used for specifying a location name type during PPCOpen only */
  55. };
  56.  
  57. typedef short PPCPortKinds;
  58.  
  59. enum {
  60.  
  61.  ppcByCreatorAndType = 1,                    /* Port type is specified as colloquial Mac creator and type */
  62.  ppcByString = 2                            /* Port type is in pascal string format */
  63. };
  64.  
  65. typedef unsigned char PPCSessionOrigin;        /* Values returned for request field in PPCInform call */
  66.  
  67. enum {
  68.  
  69.  
  70. /* Values returned for requestType field in PPCInform call */
  71.  ppcLocalOrigin = 1,                        /* session originated from this machine */
  72.  ppcRemoteOrigin = 2                        /* session originated from remote machine */
  73. };
  74.  
  75. typedef short PPCPortRefNum;
  76. typedef long PPCSessRefNum;
  77.  
  78. struct PPCPortRec {
  79.  ScriptCode nameScript;                        /* script of name */
  80.  Str32 name;                                /* name of port as seen in browser */
  81.  PPCPortKinds portKindSelector;                /* which variant */
  82.  union {
  83.   Str32 portTypeStr;                        /* pascal type string */
  84.   struct {
  85.    OSType creator;
  86.    OSType type;
  87.    } port;
  88.   } u;
  89. };
  90.  
  91. typedef struct PPCPortRec PPCPortRec;
  92. typedef PPCPortRec *PPCPortPtr;
  93.  
  94. struct LocationNameRec {
  95.  PPCLocationKind locationKindSelector;        /* which variant */
  96.  union {
  97.   EntityName nbpEntity;                        /* NBP name entity */
  98.   Str32 nbpType;                            /* just the NBP type string, for PPCOpen */
  99.   } u;
  100. };
  101.  
  102. typedef struct LocationNameRec LocationNameRec;
  103. typedef LocationNameRec *LocationNamePtr;
  104.  
  105. struct PortInfoRec {
  106.  unsigned char filler1;
  107.  Boolean authRequired;
  108.  PPCPortRec name;
  109. };
  110.  
  111. typedef struct PortInfoRec PortInfoRec;
  112. typedef PortInfoRec *PortInfoPtr;
  113.  
  114.  
  115. typedef PortInfoRec *PortInfoArrayPtr;
  116. typedef pascal Boolean (*PPCFilterProcPtr)(LocationNamePtr, PortInfoPtr);
  117. /* Procedures you will need to write */
  118. /* ex:  void    MyCompletionRoutine(PPCParamBlkPtr pb) */
  119. /* ex:  pascal Boolean MyPortFilter(LocationNamePtr, PortInfoPtr) */
  120. typedef ProcPtr PPCCompProcPtr;
  121.  
  122.  
  123. #define PPCHeader \
  124.      Ptr    qLink;                           /* PPC's Internal Use */\
  125.      unsigned short csCode;                   /* Requested PPC command */\
  126.      unsigned short intUse;                   /* Internal Use */\
  127.      Ptr    intUsePtr;                      /* Internal Use */\
  128.                                             /* 12 --> */ PPCCompProcPtr ioCompletion;  /* Completion Routine */\
  129.                                             /* 16 <-- */ OSErr   ioResult;   /* Command Result Code */\
  130.      unsigned long Reserved[5];             /* Reserved for PPC, Don'tuse */
  131.  
  132. struct PPCOpenPBRec {
  133.  PPCHeader 
  134.  PPCPortRefNum portRefNum;                    /* 38 <--   Port Reference */
  135.  long filler1;
  136.  PPCServiceType serviceType;                /* 44 -->    Bit field describing the requested port service */
  137.  unsigned char resFlag;                        /* 45 -->   Must be set to 0 */
  138.  PPCPortPtr portName;                        /* 46 -->   PortName for PPC */
  139.  LocationNamePtr locationName;                /* 50 -->   If NBP Registration is required */
  140.  Boolean networkVisible;                    /* 54 -->   make this network visible on network */
  141.  Boolean nbpRegistered;                        /* 55 <--   The given location name was registered on the network */
  142. };
  143.  
  144. typedef struct PPCOpenPBRec PPCOpenPBRec;
  145. typedef PPCOpenPBRec *PPCOpenPBPtr;
  146.  
  147. struct PPCInformPBRec {
  148.  PPCHeader
  149.  PPCPortRefNum portRefNum;                    /* 38 -->   Port Identifier */
  150.  PPCSessRefNum sessRefNum;                    /* 40 <--   Session Reference */
  151.  PPCServiceType serviceType;                /* 44 <--   Status Flags for type of session, local, remote */
  152.  Boolean autoAccept;                        /* 45 -->   if true session will be accepted automatically */
  153.  PPCPortPtr portName;                        /* 46 -->   Buffer for Source PPCPortRec */
  154.  LocationNamePtr locationName;                /* 50 -->   Buffer for Source LocationNameRec */
  155.  StringPtr userName;                        /* 54 -->   Buffer for Soure user's name trying to link. */
  156.  unsigned long userData;                    /* 58 <--   value included in PPCStart's userData */
  157.  PPCSessionOrigin requestType;                /* 62 <--   Local or Network */
  158. };
  159.  
  160. typedef struct PPCInformPBRec PPCInformPBRec;
  161. typedef PPCInformPBRec *PPCInformPBPtr;
  162.  
  163. struct PPCStartPBRec {
  164.  PPCHeader
  165.  PPCPortRefNum portRefNum;                    /* 38 -->   Port Identifier */
  166.  PPCSessRefNum sessRefNum;                    /* 40 <--   Session Reference */
  167.  PPCServiceType serviceType;                /* 44 <--   Actual service method (realTime) */
  168.  unsigned char resFlag;                        /* 45 -->   Must be set to 0  */
  169.  PPCPortPtr portName;                        /* 46 -->   Destination portName */
  170.  LocationNamePtr locationName;                /* 50 -->   NBP or NAS style service location name */
  171.  unsigned long rejectInfo;                    /* 54 <--   reason for rejecting the session request */
  172.  unsigned long userData;                    /* 58 -->   Copied to destination PPCInform parameter block */
  173.  unsigned long userRefNum;                    /* 62 -->   userRefNum (obtained during login process)  */
  174. };
  175.  
  176. typedef struct PPCStartPBRec PPCStartPBRec;
  177. typedef PPCStartPBRec *PPCStartPBPtr;
  178.  
  179. struct PPCAcceptPBRec {
  180.  PPCHeader
  181.  short filler1;
  182.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  183. };
  184.  
  185. typedef struct PPCAcceptPBRec PPCAcceptPBRec;
  186. typedef PPCAcceptPBRec *PPCAcceptPBPtr;
  187.  
  188. struct PPCRejectPBRec {
  189.  PPCHeader
  190.  short filler1;
  191.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  192.  short filler2;
  193.  long filler3;
  194.  long filler4;
  195.  unsigned long rejectInfo;                    /* 54 -->   reason for rejecting the session request  */
  196. };
  197.  
  198. typedef struct PPCRejectPBRec PPCRejectPBRec;
  199. typedef PPCRejectPBRec *PPCRejectPBPtr;
  200.  
  201. struct PPCWritePBRec {
  202.  PPCHeader
  203.  short filler1;
  204.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  205.  Size bufferLength;                            /* 44 -->   Length of the message buffer */
  206.  Size actualLength;                            /* 48 <--   Actual Length Written */
  207.  Ptr bufferPtr;                                /* 52 -->   Pointer to message buffer */
  208.  Boolean more;                                /* 56 -->   if more data in this block will be written */
  209.  unsigned char filler2;
  210.  unsigned long userData;                    /* 58 -->   Message block userData Uninterpreted by PPC */
  211.  OSType blockCreator;                        /* 62 -->   Message block creator Uninterpreted by PPC */
  212.  OSType blockType;                            /* 66 -->   Message block type Uninterpreted by PPC */
  213. };
  214.  
  215. typedef struct PPCWritePBRec PPCWritePBRec;
  216. typedef PPCWritePBRec *PPCWritePBPtr;
  217.  
  218. struct PPCReadPBRec {
  219.  PPCHeader
  220.  short filler1;
  221.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  222.  Size bufferLength;                            /* 44 -->   Length of the message buffer */
  223.  Size actualLength;                            /* 48 <--   Actual length read */
  224.  Ptr bufferPtr;                                /* 52 -->   Pointer to message buffer */
  225.  Boolean more;                                /* 56 <--   if true more data in this block to be read */
  226.  unsigned char filler2;
  227.  unsigned long userData;                    /* 58 <--   Message block userData Uninterpreted by PPC */
  228.  OSType blockCreator;                        /* 62 <--   Message block creator Uninterpreted by PPC */
  229.  OSType blockType;                            /* 66 <--   Message block type Uninterpreted by PPC */
  230. };
  231.  
  232. typedef struct PPCReadPBRec PPCReadPBRec;
  233. typedef PPCReadPBRec *PPCReadPBPtr;
  234.  
  235. struct PPCEndPBRec {
  236.  PPCHeader
  237.  short filler1;
  238.  PPCSessRefNum sessRefNum;                    /* 40 -->   Session Reference */
  239. };
  240.  
  241. typedef struct PPCEndPBRec PPCEndPBRec;
  242. typedef PPCEndPBRec *PPCEndPBPtr;
  243.  
  244. struct PPCClosePBRec {
  245.  PPCHeader
  246.  PPCPortRefNum portRefNum;                    /* 38 -->   Port Identifier */
  247. };
  248.  
  249. typedef struct PPCClosePBRec PPCClosePBRec;
  250. typedef PPCClosePBRec *PPCClosePBPtr;
  251.  
  252. struct IPCListPortsPBRec {
  253.  PPCHeader
  254.  short filler1;
  255.  unsigned short startIndex;                    /* 40 -->   Start Index */
  256.  unsigned short requestCount;                /* 42 -->   Number of entries to be returned */
  257.  unsigned short actualCount;                /* 44 <--   Actual Number of entries to be returned */
  258.  PPCPortPtr portName;                        /* 46 -->   PortName Match */
  259.  LocationNamePtr locationName;                /* 50 -->   NBP or NAS type name to locate the Port Location */
  260.  PortInfoArrayPtr bufferPtr;                /* 54 -->   Pointer to a buffer requestCount*sizeof(PortInfo) bytes big */
  261. };
  262.  
  263. typedef struct IPCListPortsPBRec IPCListPortsPBRec;
  264. typedef IPCListPortsPBRec *IPCListPortsPBPtr;
  265.  
  266. union PPCParamBlockRec {
  267.  PPCOpenPBRec openParam;
  268.  PPCInformPBRec informParam;
  269.  PPCStartPBRec startParam;
  270.  PPCAcceptPBRec acceptParam;
  271.  PPCRejectPBRec rejectParam;
  272.  PPCWritePBRec writeParam;
  273.  PPCReadPBRec readParam;
  274.  PPCEndPBRec endParam;
  275.  PPCClosePBRec closeParam;
  276.  IPCListPortsPBRec listPortsParam;
  277. };
  278.  
  279. typedef union PPCParamBlockRec PPCParamBlockRec;
  280. typedef PPCParamBlockRec *PPCParamBlockPtr;
  281.  
  282.  
  283. #ifdef __cplusplus
  284. extern "C" {
  285. #endif
  286. /*  PPC Calling Conventions  */
  287. #pragma parameter __D0 PPCInit
  288. pascal OSErr PPCInit(void)
  289.  = {0x7000,0xA0DD}; 
  290. pascal OSErr PPCOpen(PPCOpenPBPtr pb,Boolean async); 
  291. #pragma parameter __D0 PPCOpenSync(__A0)
  292. pascal OSErr PPCOpenSync(PPCOpenPBPtr pb)
  293.  = {0x7001,0xA0DD}; 
  294. #pragma parameter __D0 PPCOpenAsync(__A0)
  295. pascal OSErr PPCOpenAsync(PPCOpenPBPtr pb)
  296.  = {0x7001,0xA4DD}; 
  297. pascal OSErr PPCInform(PPCInformPBPtr pb,Boolean async); 
  298. #pragma parameter __D0 PPCInformSync(__A0)
  299. pascal OSErr PPCInformSync(PPCInformPBPtr pb)
  300.  = {0x7003,0xA0DD}; 
  301. #pragma parameter __D0 PPCInformAsync(__A0)
  302. pascal OSErr PPCInformAsync(PPCInformPBPtr pb)
  303.  = {0x7003,0xA4DD}; 
  304. pascal OSErr PPCStart(PPCStartPBPtr pb,Boolean async); 
  305. #pragma parameter __D0 PPCStartSync(__A0)
  306. pascal OSErr PPCStartSync(PPCStartPBPtr pb)
  307.  = {0x7002,0xA0DD}; 
  308. #pragma parameter __D0 PPCStartAsync(__A0)
  309. pascal OSErr PPCStartAsync(PPCStartPBPtr pb)
  310.  = {0x7002,0xA4DD}; 
  311. pascal OSErr PPCAccept(PPCAcceptPBPtr pb,Boolean async); 
  312. #pragma parameter __D0 PPCAcceptSync(__A0)
  313. pascal OSErr PPCAcceptSync(PPCAcceptPBPtr pb)
  314.  = {0x7004,0xA0DD}; 
  315. #pragma parameter __D0 PPCAcceptAsync(__A0)
  316. pascal OSErr PPCAcceptAsync(PPCAcceptPBPtr pb)
  317.  = {0x7004,0xA4DD}; 
  318. pascal OSErr PPCReject(PPCRejectPBPtr pb,Boolean async); 
  319. #pragma parameter __D0 PPCRejectSync(__A0)
  320. pascal OSErr PPCRejectSync(PPCRejectPBPtr pb)
  321.  = {0x7005,0xA0DD}; 
  322. #pragma parameter __D0 PPCRejectAsync(__A0)
  323. pascal OSErr PPCRejectAsync(PPCRejectPBPtr pb)
  324.  = {0x7005,0xA4DD}; 
  325. pascal OSErr PPCWrite(PPCWritePBPtr pb,Boolean async); 
  326. #pragma parameter __D0 PPCWriteSync(__A0)
  327. pascal OSErr PPCWriteSync(PPCWritePBPtr pb)
  328.  = {0x7006,0xA0DD}; 
  329. #pragma parameter __D0 PPCWriteAsync(__A0)
  330. pascal OSErr PPCWriteAsync(PPCWritePBPtr pb)
  331.  = {0x7006,0xA4DD}; 
  332. pascal OSErr PPCRead(PPCReadPBPtr pb,Boolean async); 
  333. #pragma parameter __D0 PPCReadSync(__A0)
  334. pascal OSErr PPCReadSync(PPCReadPBPtr pb)
  335.  = {0x7007,0xA0DD}; 
  336. #pragma parameter __D0 PPCReadAsync(__A0)
  337. pascal OSErr PPCReadAsync(PPCReadPBPtr pb)
  338.  = {0x7007,0xA4DD}; 
  339. pascal OSErr PPCEnd(PPCEndPBPtr pb,Boolean async); 
  340. #pragma parameter __D0 PPCEndSync(__A0)
  341. pascal OSErr PPCEndSync(PPCEndPBPtr pb)
  342.  = {0x7008,0xA0DD}; 
  343. #pragma parameter __D0 PPCEndAsync(__A0)
  344. pascal OSErr PPCEndAsync(PPCEndPBPtr pb)
  345.  = {0x7008,0xA4DD}; 
  346. pascal OSErr PPCClose(PPCClosePBPtr pb,Boolean async); 
  347. #pragma parameter __D0 PPCCloseSync(__A0)
  348. pascal OSErr PPCCloseSync(PPCClosePBPtr pb)
  349.  = {0x7009,0xA0DD}; 
  350. #pragma parameter __D0 PPCCloseAsync(__A0)
  351. pascal OSErr PPCCloseAsync(PPCClosePBPtr pb)
  352.  = {0x7009,0xA4DD}; 
  353. pascal OSErr IPCListPorts(IPCListPortsPBPtr pb,Boolean async); 
  354. #pragma parameter __D0 IPCListPortsSync(__A0)
  355. pascal OSErr IPCListPortsSync(IPCListPortsPBPtr pb)
  356.  = {0x700A,0xA0DD}; 
  357. #pragma parameter __D0 IPCListPortsAsync(__A0)
  358. pascal OSErr IPCListPortsAsync(IPCListPortsPBPtr pb)
  359.  = {0x700A,0xA4DD}; 
  360.  
  361. #pragma parameter __D0 PPCKill(__A0)
  362. pascal OSErr PPCKill(PPCParamBlockPtr pb)
  363.  = {0x700B,0xA0DD}; 
  364.  
  365. pascal OSErr DeleteUserIdentity(unsigned long userRef); 
  366. pascal OSErr GetDefaultUser(unsigned long *userRef,
  367.                             Str32 userName); 
  368. pascal OSErr StartSecureSession(PPCStartPBPtr pb,
  369.                                 Str32 userName,
  370.                                 Boolean useDefault,
  371.                                 Boolean allowGuest,
  372.                                 Boolean *guestSelected,
  373.                                 ConstStr255Param prompt); 
  374. pascal OSErr PPCBrowser(ConstStr255Param prompt,
  375.                         ConstStr255Param applListLabel,
  376.                         Boolean defaultSpecified,
  377.                         LocationNameRec *theLocation,
  378.                         PortInfoRec *thePortInfo,
  379.                         PPCFilterProcPtr portFilter,
  380.                         ConstStr32Param theLocNBPType)
  381.  = {0x303C,0x0D00,0xA82B}; 
  382. #ifdef __cplusplus
  383. }
  384. #endif
  385.  
  386. #endif
  387.